#ifndef GESTORDECLIENTE_H
#define GESTORDECLIENTE_H

#include "PartidaMultijugador.h"
#include "Inbox.h"
#include <vector>
//#include "../common/Connection.h"
#include "../common/Socket.h"
#include "../modelo/Objetos/Objeto.h"
class Servidor;

class PartidaMultijugador;

class GestorDeCliente {
private: 
	//Connection *conexion;
	Socket* socket;
	std::vector<PartidaMultijugador*> *partidas;
	
	Inbox *inbox;
	PartidaMultijugador* partida;
	bool conectado;
	short idEnPartida;
	Servidor *servidor;
public:
	GestorDeCliente(Socket *sock, std::vector<PartidaMultijugador*> *partidas, Servidor *servidor);
	virtual ~GestorDeCliente(void);
	
	void Start();
	void Stop();
	
	void crearPartida(short nivel, short cantidadDeJugadores);
	bool unirseAPartida(short iDPartida);
	void confirmarInicio();
	void desconectarDePartida();
	void matarPartida();
		
	void lanzarHuevo(short velX, short velY);
	
	void notificarObjetoNuevo(Objeto *obj);
	void notificarObjetoDestruido(short id);
	void notificarPartidas();
	void notificarInicio();
	
	void notificarPartidaGanada();
	void notificarPartidaPerdida();
		
	void setIdEnPartida(short id);
	short getIdEnPartida();
};

#endif
